package cn.ihrm.sass.service;


import cn.ihrm.sass.dao.RoleDao;
import cn.ihrm.sass.entity.system.Role;
import cn.service.BaseService;
import cn.utils.IdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

@Service
public class RoleService extends BaseService {
    @Autowired
    private RoleDao roleDao;

    @Autowired
    private IdWorker idWorker;

    /**
     * 保存用户
     * 1.配置idwork到工程
     * 2.在service中注入idwork
     * 3.通过idwork生成id
     * 4.保存企业
     */
    public void add(Role role) {
        //基本属性的设置
        //使用雪花算法生成id
        String id = idWorker.nextId() + "";
        role.setId(id);
        //默认的状态

        roleDao.save(role);
    }

    /**
     * 更新用户
     * 1.参数：Role
     * 2.根据id查询企业对象
     * 3.设置需要修改的属性
     * 4.调用dao完成更新
     */
    public void update(Role role) {
        //先 查询再更新

        // id可能为空  进行判空操作

        //根据id查询到 company信息
        Role temp = roleDao.findById(role.getId()).get();
        // 获得名字
        temp.setDescription(role.getDescription());
        temp.setName(role.getName());

        // 更新
        roleDao.save(temp);
    }


    /**
     * 删除用户
     */
    public void deleteById(String id) {
        roleDao.deleteById(id);
    }

    /**
     * 根据id查询用户
     */
    public Role findById(String id) {
        // 固定写法
        Role role = roleDao.findById(id).get();
        return role;
    }

    /**
     * 查询所有用户列表
     * 参数：
     * hasDept:
     * departmentId:
     * companyId:
     * 分页查询
     */
    public Page<Role> findAll(String compangyId, int page,int size) {
        // 查询条件
        //Specification<Role> spec = new Specification<Role>() {
        //    /**
        //     * 动态拼接查询条件
        //     * @param root
        //     * @param query
        //     * @param cb
        //     * @return
        //     */
        //    @Override
        //    public Predicate toPredicate(Root<Role> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        //        // 拼接
        //        return cb.equal(root.get("companyId").as(String.class),compangyId);
        //    }
        //};

        // 分页查询
        Page<Role> pageRole = roleDao.findAll(getSpec(compangyId), PageRequest.of(page,size));

        return pageRole;
    }
}
